<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
<script>
  //then 方法 
  // 当此方法执行完后再执行内部的程序是避免了没有获取到数据当此方法执行完后再执行内部的程序是避免了没有获取到数据
  //干嘛的 
  const pro =new Promise((resolve,reject)=>{
    console.log(`start`);
    try{
      // throw new Error(`失败的原因`)
      console.log(`开始请求A`);
    setTimeout(()=>{
      // console.log(`异步执行`);
      resolve(`A成功`);
      // throw new Error(`失败`)
      console.log(`aaaa`);
      // resolve({token:`asdasdas`})
      // reject(`异步失败`)
    },4000)
    }catch(e){
      reject(e.message)
    }
  })
  console.log(`pro`,pro);
  // pro.then(()=>{},()=>{})

  // pro.then((value)=>{
  //   // console.log(value);
  //   //监听pro的状态 一旦 pro实列的状态改变 则执行内部的回调函数
  //   //第一个回调处理成功promise实列的逻辑
  //   //第2个回调处理失败promise实列的逻辑
  //   //它们各自接收promise实列改变后的值
  //   console.log(`成功`,value);
  // },(value)=>{
  //   console.log(`失败`,value);
  // })


  //then 默认返回成功promise的实列 值是回调函数的返回值
  //  pronext =pro.then((value)=>{
  //   // console.log(value);
  //   //监听pro的状态 一旦 pro实列的状态改变 则执行内部的回调函数
  //   //第一个回调处理成功promise实列的逻辑
  //   //第2个回调处理失败promise实列的逻辑
  //   //它们各自接收promise实列改变后的值
  //   // console.log(`成功`,value);
  //   console.log(`开始请求B了`);
  //   setTimeout(()=>{

  //     console.log(`B成功了`);

  //   },2000)
  //   // return 22
  // })
  // console.log(`pronext`,pronext);

  // pronext.then(()=>{
  //   console.log(`开始C`);
  //   setTimeout(()=>{
  //     console.log(`C成功了`);
  //   },2000)
  // })




  console.log(`end`);
  // console.log(`pro`,pro);
</script>
</html>